#include <bits/stdc++.h>

using namespace std;

const int maxn=105;
const double inf=1e13;
const double eps=1e-4;

double _f[2][maxn][maxn],w[maxn];
double (*f)[maxn],(*g)[maxn];

int main(){
    int n,m,s;
    double p,ans;

    f=_f[0];g=_f[1];
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++) scanf("%lf",w+i);
    scanf("%d%lf",&s,&p);
    for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) g[i][j]=f[i][j]=i==j?0:-inf;
    for(int i=0;i<m;i++){
        int x,y;
        scanf("%d%d",&x,&y);
        f[x][y]=w[y];
    }

    ans=-inf;
    double p0=p;
    bool go;
    do{
        go=0;
        for(int k=1;k<=n;k++)
            for(int i=1;i<=n;i++)
                for(int j=1;j<=n;j++){
                    double t;
                    g[i][j]=max(g[i][j],f[i][k]+(t=p*f[k][j]));
                    if(i==s) ans=max(ans,g[i][j]);
                    if(t>eps) go=1;
                }
        swap(f,g);
        p*=p;
    }while(go);

    printf("%.1f\n",ans*p0+w[s]);
    return 0;
}

